/**
 * @file Console.h
 * @brief
 * @version 0.1
 * @date 2022-05-14
 *
 * @copyright Copyright (c) 2022
 *
 */
#ifndef _CONSOLE_H_
#define _CONSOLE_H_
#include <conio.h>
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "../include/ListType.h"
#include "../include/StrFunc.h"
#include "../include/AccountType.h"
#include "../include/BookType.h"
#include "../include/RecordType.h"
#include "../include/DateType.h"
/**
 * @brief
 * 书籍链表，链表中的元素的booktype
 *  账户链表，链表中的元素是accounttype
 * 记录链表，链表中的元素是recordtype
 *
 */
BookListType *bookList;
AccountListType *accountList;
RecordListType *recordList;
/**
 * @brief 数据库初始化
 * 
 */
void initDataBase(const char*bookListFilename, const char*accountListFilename, const char*recordListFilename);
/**
 * @brief 控制菜单选择
 *
 */
int UI_menuList();
/**
 * @brief 打印菜单栏
 *
 */
void printList();
/**
 * @brief 按Esc返回，按Enter继续
 *
 */
int UI_exit();

/**
 * @brief 3秒自动退出
 *
 */
void autoexit();
/**
 * @brief 3秒自动返回
 * @param printstr 需要打印的字符
 */
void autoreturn(const char *printstr);
/**
 * @brief 主界面
 *
 */
void UI_homePage();
/**
 * @brief 学生登录界面
 *
 */
void UI_Stu_Login();
/**
 * @brief 管理员登录界面
 *
 */
void UI_Root_Login();
/**
 * @brief 学生注册界面
 *
 */
void UI_Stu_Regist();

/**
 * @brief 学生功能界面
 *
 *
 */
void UI_Stu_Func(const char *id);
/**
 * @brief 借书界面
 *
 */
void UI_Stu_borrowBook(const char *id);
/**
 * @brief 还书界面
 * @param id 学生id
 */
void UI_Stu_returnBook(const char *id);
/**
 * @brief 续借界面
 *
 */
void UI_Stu_renewNook(const char *id);
/**
 * @brief 学生查询书籍
 *
 */
void UI_Stu_searchBook();
/**
 * @brief 管理员功能界面
 *
 */
void UI_Root_Func();
/**
 * @brief 增加书籍种类
 *
 */
void UI_Root_addBook();
/**
 * @brief 减少书籍种类
 *
 */
void UI_Root_removeBook();
/**
 * @brief 更改书籍信息
 *
 */
void UI_Root_changeBookInfo();
/**
 * @brief 增加用户
 *
 */
void UI_Root_addUser();
/**
 * @brief 减少用户
 *
 */
void UI_Root_removeAccount();
/**
 * @brief 更改用户信息
 *
 */
void UI_Root_changeUserInfo();
/**
 * @brief 查询当前id已经借的书
 *
 */
void UI_Stu_bookBorrowed(const char *id);
/**
 * @brief 查询可以借的书籍
 *
 */
void UI_Stu_bookAvailable();
/**
 * @brief 确定用户的Y/N
 * @param str 提示词
 * @return int 布尔值
 */
int UI_confirm(const char *str);
/**
 * @brief 读取一系列表单数据
 * @param str 逗号分割的字符串，表示需要输入的表单项目
 * @return char* CSV格式的一行字符串
 */
char *UI_readRowInfo(const char *str);
#endif // _CONSOLE_H_
